/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * dlgBuscarProducto.java
 *
 * Created on 29/10/2011, 10:26:42 AM
 */

package visual.Ingreso;

import bentity.beCombo;
import bentity.beItem;
import bentity.beProducto;
import bentity.beUsuario;
import blogic.blHelper;
import blogic.blProducto;
import blogic.blProveedor;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import visual.Seguridad.visualHelper;

/**
 *
 * @author chokewanka
 */
public class dlgBuscarProducto extends javax.swing.JDialog {
    private DefaultTableModel dtm;
    private beProducto prodElegido=null;

    /** Creates new form dlgBuscarProducto */
    public dlgBuscarProducto(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
            initComponents();
            try{
            blHelper blh = new blHelper();
            ArrayList<beCombo> comboObjeto = new ArrayList<beCombo>();
            comboObjeto = (new blProducto()).llenarComboTipoProducto(true, "Todos");
            this.cbxTipoProducto.setModel(blh.ComboBoxItem(comboObjeto));
            comboObjeto = (new blProveedor().llenarComboProveedor(true, "Todos"));
            this.cbxProveedor.setModel(blh.ComboBoxItem(comboObjeto));
            }
            catch(Exception e){
                e.printStackTrace();
                visualHelper.mostrarMensajeError("Ha ocurrido un error. Inténtelo nuevamente");
            }
            this.setAlwaysOnTop(true);
            visualHelper.centrarDialogoEnPantalla(this);
            this.dtm = (DefaultTableModel)this.tblProductos.getModel();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lblTitulo = new javax.swing.JLabel();
        gpbBusqueda = new javax.swing.JPanel();
        btnBuscar = new javax.swing.JButton();
        lblCosto = new javax.swing.JLabel();
        txtCosto = new javax.swing.JTextField();
        txtNombre = new javax.swing.JTextField();
        lblNombre = new javax.swing.JLabel();
        lblProveedor = new javax.swing.JLabel();
        cbxProveedor = new javax.swing.JComboBox();
        lblTipoProducto = new javax.swing.JLabel();
        cbxTipoProducto = new javax.swing.JComboBox();
        lblTablaProductos = new javax.swing.JLabel();
        btnSeleccionar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblProductos = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setMinimumSize(new java.awt.Dimension(670, 470));
        setModal(true);
        setResizable(false);
        getContentPane().setLayout(null);

        lblTitulo.setFont(new java.awt.Font("Dialog", 0, 36));
        lblTitulo.setForeground(new java.awt.Color(0, 0, 0));
        lblTitulo.setText("Buscar Producto");
        getContentPane().add(lblTitulo);
        lblTitulo.setBounds(185, 11, 296, 43);

        gpbBusqueda.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)), "Busqueda de Productos", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 0, 12), new java.awt.Color(0, 0, 0))); // NOI18N
        gpbBusqueda.setForeground(java.awt.Color.black);
        gpbBusqueda.setLayout(null);

        btnBuscar.setBackground(new java.awt.Color(240, 235, 226));
        btnBuscar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnBuscar.setForeground(new java.awt.Color(0, 0, 0));
        btnBuscar.setText("Buscar");
        btnBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBuscarActionPerformed(evt);
            }
        });
        gpbBusqueda.add(btnBuscar);
        btnBuscar.setBounds(480, 100, 130, 27);

        lblCosto.setFont(new java.awt.Font("Dialog", 0, 12));
        lblCosto.setForeground(new java.awt.Color(0, 0, 0));
        lblCosto.setText("Precio Venta");
        gpbBusqueda.add(lblCosto);
        lblCosto.setBounds(20, 70, 150, 15);

        txtCosto.setFont(new java.awt.Font("Dialog", 0, 12));
        txtCosto.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtCostoKeyTyped(evt);
            }
        });
        gpbBusqueda.add(txtCosto);
        txtCosto.setBounds(110, 70, 180, 25);

        txtNombre.setFont(new java.awt.Font("Dialog", 0, 12));
        gpbBusqueda.add(txtNombre);
        txtNombre.setBounds(110, 30, 180, 25);

        lblNombre.setFont(new java.awt.Font("Dialog", 0, 12));
        lblNombre.setForeground(new java.awt.Color(0, 0, 0));
        lblNombre.setText("Nombre");
        gpbBusqueda.add(lblNombre);
        lblNombre.setBounds(20, 30, 49, 15);

        lblProveedor.setFont(new java.awt.Font("Dialog", 0, 12));
        lblProveedor.setForeground(new java.awt.Color(0, 0, 0));
        lblProveedor.setText("Proveedor");
        gpbBusqueda.add(lblProveedor);
        lblProveedor.setBounds(300, 30, 64, 15);

        cbxProveedor.setFont(new java.awt.Font("Dialog", 0, 12));
        cbxProveedor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cbxProveedor.setSelectedItem(null);
        gpbBusqueda.add(cbxProveedor);
        cbxProveedor.setBounds(420, 30, 190, 25);

        lblTipoProducto.setFont(new java.awt.Font("Dialog", 0, 12));
        lblTipoProducto.setForeground(new java.awt.Color(0, 0, 0));
        lblTipoProducto.setText("Tipo de producto");
        gpbBusqueda.add(lblTipoProducto);
        lblTipoProducto.setBounds(300, 70, 107, 15);

        cbxTipoProducto.setFont(new java.awt.Font("Dialog", 0, 12));
        cbxTipoProducto.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cbxTipoProducto.setSelectedItem(null);
        cbxTipoProducto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxTipoProductoActionPerformed(evt);
            }
        });
        gpbBusqueda.add(cbxTipoProducto);
        cbxTipoProducto.setBounds(420, 70, 190, 25);

        getContentPane().add(gpbBusqueda);
        gpbBusqueda.setBounds(20, 50, 630, 140);

        lblTablaProductos.setFont(new java.awt.Font("Dialog", 0, 12));
        lblTablaProductos.setForeground(new java.awt.Color(0, 0, 0));
        lblTablaProductos.setText("Productos");
        getContentPane().add(lblTablaProductos);
        lblTablaProductos.setBounds(20, 200, 160, 15);

        btnSeleccionar.setBackground(new java.awt.Color(240, 235, 226));
        btnSeleccionar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnSeleccionar.setForeground(new java.awt.Color(0, 0, 0));
        btnSeleccionar.setText("Elegir");
        btnSeleccionar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSeleccionarActionPerformed(evt);
            }
        });
        getContentPane().add(btnSeleccionar);
        btnSeleccionar.setBounds(160, 410, 120, 27);

        btnCancelar.setBackground(new java.awt.Color(240, 235, 226));
        btnCancelar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnCancelar.setForeground(new java.awt.Color(0, 0, 0));
        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });
        getContentPane().add(btnCancelar);
        btnCancelar.setBounds(400, 410, 120, 27);

        tblProductos.setFont(new java.awt.Font("Dialog", 0, 12));
        tblProductos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Codigo", "Nombre", "Precio de Venta", "Tipo de Producto"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tblProductos.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblProductos.getTableHeader().setReorderingAllowed(false);
        jScrollPane1.setViewportView(tblProductos);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(30, 220, 620, 180);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBuscarActionPerformed

        ArrayList<beProducto> listaProductos=new ArrayList<beProducto>();
        try {
            listaProductos = buscarProductos();

            if(listaProductos==null){
                visualHelper.mostrarMensajeAdvertencia("No se encontraron productos con los parámetros ingresados");
                return;
            }

            mostrarProductos(listaProductos);

        } catch (Exception e) {
            e.printStackTrace();
            visualHelper.mostrarMensajeError("Ha ocurrido un error en la búsqueda. Inténtelo nuevamente.");
        }
    }//GEN-LAST:event_btnBuscarActionPerformed

    private void cbxTipoProductoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxTipoProductoActionPerformed

}//GEN-LAST:event_cbxTipoProductoActionPerformed

    private void btnSeleccionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSeleccionarActionPerformed
        // TODO add your handling code here:
        int idProducto;
        int fila = this.tblProductos.getSelectedRow();
        if (fila == -1)
            JOptionPane.showMessageDialog(this, "Debe seleccionar un producto.", "Información", JOptionPane.INFORMATION_MESSAGE);
        else{
            try{
                for(int i=0;i<this.tblProductos.getRowCount();i++){
                    if(this.tblProductos.isRowSelected(i)){
                        idProducto=Integer.parseInt(this.tblProductos.getValueAt(i, 0).toString());
                        prodElegido=(new blProducto()).obtenerProductoPorCodigo(idProducto);
                        this.setVisible(false);
                        break;
                    }
                }


            } catch(Exception e){}
            this.setVisible(false);
            this.dispose();
        }
}//GEN-LAST:event_btnSeleccionarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        this.dispose();
}//GEN-LAST:event_btnCancelarActionPerformed

    private void txtCostoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtCostoKeyTyped
        visualHelper.soloDigitosYPunto(evt);
    }//GEN-LAST:event_txtCostoKeyTyped

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                dlgBuscarProducto dialog = new dlgBuscarProducto(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnBuscar;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnSeleccionar;
    private javax.swing.JComboBox cbxProveedor;
    private javax.swing.JComboBox cbxTipoProducto;
    private javax.swing.JPanel gpbBusqueda;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblCosto;
    private javax.swing.JLabel lblNombre;
    private javax.swing.JLabel lblProveedor;
    private javax.swing.JLabel lblTablaProductos;
    private javax.swing.JLabel lblTipoProducto;
    private javax.swing.JLabel lblTitulo;
    private javax.swing.JTable tblProductos;
    private javax.swing.JTextField txtCosto;
    private javax.swing.JTextField txtNombre;
    // End of variables declaration//GEN-END:variables

    private ArrayList<beProducto> buscarProductos() throws Exception{
        String nombreProducto="";
        String costoProducto="";
        int tipoProducto=-1;
        int proveedorProducto=-1;
        ArrayList<beProducto> listaProductos=new ArrayList<beProducto>();

        if(!this.txtNombre.getText().equals("")) nombreProducto=this.txtNombre.getText();
        if(!this.txtCosto.getText().equals("")) costoProducto=this.txtCosto.getText();
        if(this.cbxTipoProducto.getSelectedIndex()>0) tipoProducto=((beItem)this.cbxTipoProducto.getSelectedItem()).getId();
        if(this.cbxProveedor.getSelectedIndex()>0) proveedorProducto=((beItem)this.cbxProveedor.getSelectedItem()).getId();

        listaProductos=(new blProducto()).busquedaProductosBL(nombreProducto,costoProducto,tipoProducto,proveedorProducto);

        return listaProductos;

    }

    private void mostrarProductos(ArrayList<beProducto> listaProductos) throws Exception{

        for(int i=0;i<=dtm.getRowCount()-1;){
            dtm.removeRow(0);
        }
        Object [] datos = new Object [4];
        for(int i=0;i<listaProductos.size();i++){
            datos[0] = listaProductos.get(i).getIdProducto();
            datos[1] = listaProductos.get(i).getNombre();
            datos[2] = listaProductos.get(i).getCosto();
            datos[3] = (new blProducto()).devuelveTipoProducto(listaProductos.get(i).getTipoProducto()).getDescripcion();
            dtm.addRow(datos);
        }
        this.tblProductos.setRowSelectionAllowed(true);
        this.tblProductos.setColumnSelectionAllowed(false);

    }

    public beProducto getProdElegido() {
        return prodElegido;
    }

    public void setProdElegido(beProducto prodElegido) {
        this.prodElegido = prodElegido;


    }



}
